using System;

using lucere.index.read;
using lucere.toolkit;

namespace lucere.index.write
{
    public interface ITermVectorsWriter : IDisposable
    {
        IUTF8Result[] Utf8Results { get; set; } 
                  
        /// <summary>
        /// Add a complete document specified by all its term vectors. 
        /// If document has no term vectors, add value for tvx.
        /// </summary>
        /// <param name="vectors"></param>
        void AddAllDocumentVectors(ITermFrequencyVector[] vectors);

        /// <summary>
        /// Do a bulk copy of numDocs documents from reader to our streams.  
        /// This is used to expedite merging, if the field numbers are congruent.
        /// </summary>
        /// <param name="reader"></param>
        /// <param name="tvdLengths"></param>
        /// <param name="tvfLengths"></param>
        /// <param name="numDocs"></param>
        void AddRawDocuments(ITermVectorsReader reader, int[] tvdLengths, int[] tvfLengths, int numDocs);
    }
}